package com.liang.cloud.Service;

import com.liang.cloud.Dto.OrderDTO;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

/**
 * @author: 余亮亮
 * @description:
 * @create: 2019-12-29 10:19:09
 **/
public interface OrderService {
    /**
     * 创建订单
     * @param orderDTO
     * @return
     */
    OrderDTO create(OrderDTO orderDTO);

    /**
     * 查询单个订单
     * @param orderId
     * @return
     */
    OrderDTO findOne(String orderId);

    /**
     * 查询订单列表
     * @param buyerOpenid
     * @param pageable
     * @return
     */
    Page<OrderDTO> findListWithOpenid(String buyerOpenid, Pageable pageable);

    /**
     * 取消订单
     * @param orderDTO
     * @return
     */
    OrderDTO cancel(OrderDTO orderDTO);

    /**
     * 完结订单
     * @param orderDTO
     * @return
     */
    OrderDTO finish(OrderDTO orderDTO);

    /**
     * 支付订单
     * @param orderDTO
     * @return
     */
    OrderDTO paid(OrderDTO orderDTO);

    /**
     * 查询订单列表
     * @param pageable
     * @return
     */
    Page<OrderDTO> findList(Pageable pageable);

    /**
     * 查询订单 带安全效验订单是不是主人
     * @param openid
     * @param orderId
     * @return
     */
    OrderDTO findOne(String openid, String orderId);

    /**
     * 取消订单 带安全效验订单是不是主人
     * @param openid
     * @param orderId
     * @return
     */
    OrderDTO cancel(String openid, String orderId);


    /**
     * 根据openid来查询订单
     * @param openid
     * @return
     */
    List<OrderDTO> findByOpenid(String openid);
}
